Code sample Home

Pick a position inside of TIN triangle and display info message about the triangle's edges and contacted triangles.
//-----------------------------------------------
void DemoTinEdge (HANDLE hLcWnd)
{
  double X, Y;
  HANDLE hEnt, hTri;
  HANDLE hPt0, hPt1, hTri2;
  int    iEdge, iPt0, iPt1, iTri2, j;
  WCHAR  szText[256], szEdge[64];

m1:
  if (lcWndWaitPoint( hLcWnd, L"Pick TIN triangle", &X, &Y ) == TRUE){
    hEnt = lcWndGetEntByPoint2( hLcWnd, X, Y, 0.0 );
    if (lcEntType( hEnt, LC_ENT_TIN ) == TRUE){
      hTri = lcTIN_TriGetByPos( hEnt, X, Y );
      if (hTri != 0){
        j = lcPropGetInt( hTri, LC_PROP_TINTR_I );
        swprintf( szText, L"Triangle %d\n", j );
        for (iEdge=0; iEdge<=2; ++iEdge){
          lcTIN_TriGetEdge( hEnt, hTri, iEdge );
          // handles
          hPt0  = lcPropGetHandle( 0, LC_PROP_G_TIN_PT0 );
          hPt1  = lcPropGetHandle( 0, LC_PROP_G_TIN_PT1 );
          hTri2 = lcPropGetHandle( 0, LC_PROP_G_TIN_TR );
          // indices
          iPt0  = lcPropGetInt( hPt0, LC_PROP_TINPNT_I );
          iPt1  = lcPropGetInt( hPt1, LC_PROP_TINPNT_I );
          if (hTri2 > 0){
            iTri2 = lcPropGetInt( hTri2, LC_PROP_TINTR_I );
          }else{
            iTri2 = -1;
          }
          if (iTri2 >= 0){
            swprintf( szEdge, L"Edge %d - %d contact with Trianle %d", iPt0, iPt1, iTri2 );
          }else{
            swprintf( szEdge, L"Edge %d - %d don't contact with any trianle", iPt0, iPt1 );
          }
          wcscat( szText, szEdge );
          wcscat( szText, L"\n" );
        }
        lcWndMessage( hLcWnd, szText, 0 );
      }
    }else{
      goto m1;
    }
  }
}

Sample message - result of the code sample: